package com.ruoyi.pidaijiData.service.impl;

import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.calculate.BezierCurveUtil;
import com.ruoyi.pidaijiData.domain.plat.DataPidaijiZx;
import com.ruoyi.pidaijiData.mapper.DataPidaijiZxMapper;
import com.ruoyi.pidaijiData.service.IDataPidaijiZxService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.AsyncResult;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.concurrent.Future;


/**
 * 皮带机轴向测试数据Service业务层处理
 * 
 * @author ruoyi
 * @date 2024-03-04
 */
@Service
public class DataPidaijiZxServiceImpl implements IDataPidaijiZxService
{
    @Autowired
    private DataPidaijiZxMapper dataPidaijiZxMapper;

    /**
     * 查询皮带机轴向测试数据
     * 
     * @param zxId 皮带机轴向测试数据主键
     * @return 皮带机轴向测试数据
     */
    @Override
    public DataPidaijiZx selectDataPidaijiZxByZxId(Long zxId)
    {
        return dataPidaijiZxMapper.selectDataPidaijiZxByZxId(zxId);
    }

    /**
     * 查询皮带机轴向测试数据列表
     * 
     * @param dataPidaijiZx 皮带机轴向测试数据
     * @return 皮带机轴向测试数据
     */
    @Override
    public List<DataPidaijiZx> selectDataPidaijiZxList(DataPidaijiZx dataPidaijiZx)
    {
        return dataPidaijiZxMapper.selectDataPidaijiZxList(dataPidaijiZx);
    }

    /**
     * 查询皮带机轴向测试数据
     *
     * @param dataTaskId
     * @return 皮带机能耗测试数据
     */
    @Async("threadPoolKy")
    @Override
    public Future<List<DataPidaijiZx>> selectDataPidaijiZxByDataTaskId(Long dataTaskId) {
        List<DataPidaijiZx> dataPidaijiZxList = dataPidaijiZxMapper.selectDataPidaijiZxByDataTaskId(dataTaskId);
        if (!dataPidaijiZxList.isEmpty()) {
            dataPidaijiZxList.forEach(item -> {
                if (item.getWyList() != null) {
                    // 速度曲线数据
                    item.setWyChartLineDTO(BezierCurveUtil.calPoints(item.getWyList(), 0.1f, true));
                }
            });
        }
        return new AsyncResult<>(dataPidaijiZxList);
    }

    /**
     * 新增皮带机轴向测试数据
     *
     * @param dataPidaijiZxs 皮带机轴向测试数据
     * @return 结果
     */
    @Override
    public int batchDataPidaijiZx(List<DataPidaijiZx> dataPidaijiZxs) {
        return dataPidaijiZxMapper.batchDataPidaijiZx(dataPidaijiZxs);
    }

    /**
     * 修改皮带机轴向测试数据
     *
     * @param dataTaskId
     * @return 结果
     */
    @Override
    public int updateDataPidaijiZxByDataTaskId(Long dataTaskId) {
        return dataPidaijiZxMapper.updateDataPidaijiZxByDataTaskId(dataTaskId);
    }

    /**
     * 修改皮带机轴向测试数据
     *
     * @param zxId
     * @return 结果
     */
    @Override
    public int updateDataPidaijiZxByZxId(Long zxId) {
        return dataPidaijiZxMapper.updateDataPidaijiZxByZxId(zxId);
    }

    /**
     * 新增皮带机轴向测试数据
     * 
     * @param dataPidaijiZx 皮带机轴向测试数据
     * @return 结果
     */
    @Override
    public int insertDataPidaijiZx(DataPidaijiZx dataPidaijiZx)
    {
        dataPidaijiZx.setCreateTime(DateUtils.getNowDate());
        return dataPidaijiZxMapper.insertDataPidaijiZx(dataPidaijiZx);
    }

    /**
     * 修改皮带机轴向测试数据
     * 
     * @param dataPidaijiZx 皮带机轴向测试数据
     * @return 结果
     */
    @Override
    public int updateDataPidaijiZx(DataPidaijiZx dataPidaijiZx)
    {
        dataPidaijiZx.setUpdateTime(DateUtils.getNowDate());
        return dataPidaijiZxMapper.updateDataPidaijiZx(dataPidaijiZx);
    }

    /**
     * 批量删除皮带机轴向测试数据
     * 
     * @param zxIds 需要删除的皮带机轴向测试数据主键
     * @return 结果
     */
    @Override
    public int deleteDataPidaijiZxByZxIds(Long[] zxIds)
    {
        return dataPidaijiZxMapper.deleteDataPidaijiZxByZxIds(zxIds);
    }

    /**
     * 删除皮带机轴向测试数据信息
     * 
     * @param zxId 皮带机轴向测试数据主键
     * @return 结果
     */
    @Override
    public int deleteDataPidaijiZxByZxId(Long zxId)
    {
        return dataPidaijiZxMapper.deleteDataPidaijiZxByZxId(zxId);
    }
}
